function    A104()
format long;

% 传感器的频率传递函数（频率特性）
% 幅频特性为输出信号对输入信号幅值比；相频特性为输出信号相位与输入信号相位之差。

% 一阶传感器 One order sensor
omegatau = 0.1: 0.1: 100;         % 设置横坐标为对数坐标

% 计算一阶传感器的幅频特性
for i = 1: 1000
    AmpVal(i) = 1/sqrt(1 + omegatau(i)^2);
end
% 一阶传感器的幅频特性可视化
subplot(2,2,1);
semilogx(omegatau,AmpVal,'r-');
set(gca, 'Fontsize', 24);
grid on;
legend('一阶传感器的幅频特性', 'FontSize', 18);
xlabel('\omega\tau',  'FontSize', 18);
ylabel('|H(\omega)|',  'FontSize', 18);
text(1, AmpVal(10), {['\leftarrow工作频带的上限', num2str(AmpVal(10))]}, 'FontSize', 18);

% 计算一阶传感器的相频特性
phaseVal = -atan(omegatau)*180/pi;
% 一阶传感器的相频特性可视化
subplot(2,2,3);
semilogx(omegatau,phaseVal,'r-');
set(gca, 'Fontsize', 24);
grid on;
legend('一阶传感器的相频特性', 'FontSize', 18);
xlabel('\omega\tau',  'FontSize', 18);
ylabel('\phi(\omega)',  'FontSize', 18);
text(1, phaseVal(10), {['\leftarrow工作频带的上限', num2str(phaseVal(10))]}, 'FontSize', 18);

% 二阶传感器 Two order sensor
reOmega = 0.1: 0.01: 10;         % 设置横坐标为对数坐标

% 计算二阶传感器的幅频特性
% 无阻尼情况xi=0
for i = 1: 1000-9
    unVal(i) = 1/sqrt((1 - reOmega(i)^2)^2);
end
% 欠阻尼情况xi=0.1
for i = 1: 1000-9
    underVal(i) = 1/sqrt((1 - reOmega(i)^2)^2+4*0.1^2*reOmega(i)^2);
end
% 最佳欠阻尼情况xi=0.707
for i = 1: 1000-9
    optiUnderVal(i) = 1/sqrt((1 - reOmega(i)^2)^2+4*0.707^2*reOmega(i)^2);
end
% 临界阻尼情况xi=1
for i = 1: 1000-9
    criticalVal(i) = 1/sqrt((1 - reOmega(i)^2)^2+4*reOmega(i)^2);
end
% 过阻尼情况xi=2
for i = 1: 1000-9
    overVal(i) = 1/sqrt((1 - reOmega(i)^2)^2+4*2*2*reOmega(i)^2);
end
% 二阶传感器的幅频特性可视化
subplot(2,2,2);
loglog(reOmega,unVal,'m-', reOmega,underVal,'c-',reOmega,optiUnderVal,'r-', reOmega, criticalVal, 'b-', reOmega, overVal, 'g-');
set(gca, 'Fontsize', 24);
grid on;
legend('二阶传感器的幅频特性（\xi=0）', '二阶传感器的幅频特性（\xi=0.1）', '二阶传感器的幅频特性（\xi=0.707）', '二阶传感器的幅频特性（\xi=1）', '二阶传感器的幅频特性（\xi=2）',  'FontSize', 18);
xlabel('\omega/\omega_0',  'FontSize', 18);
ylabel('|H(\omega)|',  'FontSize', 18);

% 计算二阶传感器的相频特性
% 无阻尼情况xi=0
for i = 1: 1000-9
    unPhaseVal(i) = -atan(0)*180/pi;
    if i>100-9
        unPhaseVal(i) = - 180 + unPhaseVal(i);
    end
end
% 欠阻尼情况xi=0.1
for i = 1: 1000-9
    underPhaseVal(i) = -atan(2*0.1*reOmega(i)/(1-reOmega(i)^2))*180/pi;
    if underPhaseVal(i)>0
        underPhaseVal(i) = - 180 + underPhaseVal(i);
    end
end
% 最佳欠阻尼情况xi=0.707
for i = 1: 1000-9
    optiUnderPhaseVal(i) = -atan(2*0.707*reOmega(i)/(1-reOmega(i)^2))*180/pi;
    if optiUnderPhaseVal(i)>0
        optiUnderPhaseVal(i) = - 180 + optiUnderPhaseVal(i);
    end
end
% 临界阻尼情况xi=1
for i = 1: 1000-9
    criticalPhaseVal(i) = -atan(2*1*reOmega(i)/(1-reOmega(i)^2))*180/pi;
    if criticalPhaseVal(i)>0
        criticalPhaseVal(i) = - 180 + criticalPhaseVal(i);
    end
end
% 过阻尼情况xi=2
for i = 1: 1000-9
    overPhaseVal(i) = -atan(2*2*reOmega(i)/(1-reOmega(i)^2))*180/pi;
    if overPhaseVal(i)>0
        overPhaseVal(i) = - 180 + overPhaseVal(i);
    end
end
% 二阶传感器的幅频特性可视化
subplot(2,2,4);
semilogx(reOmega,unPhaseVal,'m-', reOmega,underPhaseVal,'c-', reOmega, optiUnderPhaseVal,'r-', reOmega, criticalPhaseVal, 'b-', reOmega, overPhaseVal, 'g-');
set(gca, 'Fontsize', 18);
grid on;
legend('二阶传感器的相频特性（\xi=0）', '二阶传感器的相频特性（\xi=0.1）', '二阶传感器的相频特性（\xi=0.707）', '二阶传感器的相频特性（\xi=1）', '二阶传感器的相频特性（\xi=2）',  'FontSize', 18);
xlabel('\omega/\omega_0',  'FontSize', 18);
ylabel('\phi(\omega)',  'FontSize', 18);
